package com.aisi.manager.utils;

import com.aisi.model.entity.system.SysMenu;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * @Author: shenjianZ
 * @Date: 2024/2/18 9:42
 * @Description:
 */

public class MenuHelper {

    /**
     * 构建菜单树
     *
     * @param menus 菜单列表
     * @return 菜单树列表
     */
    public static List<SysMenu> buildMenuTree(List<SysMenu> menus) {
        List<SysMenu> menuTree = new ArrayList<>();
        for (SysMenu menu : menus) {
            if (menu.getParentId() == 0) {
                menuTree.add(findChildren(menu, menus));
            }
        }
        return menuTree;
    }


    /**
     * 查找子菜单并返回菜单对象
     *
     * @param menu 当前菜单对象
     * @param menus 所有菜单列表
     * @return 返回当前菜单对象
     */
    private static SysMenu findChildren(SysMenu menu, List<SysMenu> menus) {
        menu.setChildren(new ArrayList<SysMenu>());
        for (SysMenu menuChild : menus) {
            if (Objects.equals(menuChild.getParentId(), menu.getId())) {
//                findChildren(menuChild, menus);
                menu.getChildren().add(findChildren(menuChild, menus));
            }
        }
        return menu;
    }


}
